package com.xoms.admin.persist.dao;

import java.util.List;

import com.xoms.admin.model.RoleBean;
import com.xoms.admin.model.vo.RoleResourceBean;

public interface RoleDao {
	/**
	 * 根据账号id获取角色列表
	 * @param accId
	 * @return
	 */
	List<RoleBean> selectRoles2Account(String accId);
	
	/**
	 * 获取账号的角色数量
	 * @param accid
	 * @return
	 */
	int selectCount2Account(String accid);
	
	/**
	 * 获取账号的角色列表和权限列表
	 * @param accId
	 * @return
	 */
	List<RoleResourceBean> selectRoleResouces2Account(String accId);
	
	/**
	 * 将账号和角色关系插入数据库
	 * @param accid
	 * @param roleIds
	 * @return
	 */
	int insertAccountRoles(String aid, String accid, String[] roleIds);
	
	/**
	 * 删除账号角色信息
	 * @param accid
	 * @param rids 
	 * @return
	 */
	int delAccountRoles(String accid, String[] rids);
	
	/**
	 * 插入角色新记录
	 * @param data
	 * @return
	 */
	int insert(RoleBean data);
	
	/**
	 * 更新角色信息
	 * @param data
	 * @return
	 */
	int update(RoleBean data);
	
	/**
	 * 根据id获取角色信息
	 * @param id
	 * @return
	 */
	RoleBean selectOneById(Integer id);
	
	/**
	 * 更新角色状态
	 * @param roleId
	 * @param i
	 * @return
	 */
	int updateStatus(int roleId, int status);
	
	/**
	 * 删除角色
	 * @param roleId
	 * @return
	 */
	int del(int roleId);
	
	/**
	 * 查询拥有该角色的用户数量
	 * @param roleId
	 * @return
	 */
	int selectAccNum2Role(int roleId);
	
	/**
	 * 删除该角色的所有关联关系
	 * @param roleId
	 * @return
	 */
	int delAllRoleRelation(int roleId);
	
	/**
	 * 查询该角色下关联权限数量
	 * @param roleId
	 * @return
	 */
	int selectResNum2Role(int roleId);
	
	/**
	 * 删除该角色下与权限的管理关系
	 * @param roleId
	 * @return
	 */
	int delAllResRelation2Role(int roleId);
	
	/**
	 * 查询角色数量
	 * @param key
	 * @return
	 */
	int selectCount(String key);
	
	/**
	 * 获取角色列表
	 * @param key
	 * @param page
	 * @param pagesize
	 * @return
	 */
	List<RoleBean> selectList(String key, int page, int pagesize);
	
	/**
	 * 将角色权限关联关系插入数据库
	 * @param roleId
	 * @param resourceIds
	 * @return
	 */
	int insertRoleResources(String aid, int roleId, String[] resourceIds);

	int updateSorts(List<String> sortList, int page, int pagesize);

	int delRoleResources(int roleId, String[] rids);


}
